The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for optimizing redundant array of independent disks reads for solid state drives.
RAID (redundant array of independent disks) is a storage technology that combines multiple disk drive components into a logical unit. A RAID controller distributes data across the drives in one of several ways called “RAID levels,” depending on what level of redundancy and performance is desired. RAID is now used as an umbrella term for computer data storage schemes that can divide and replicate data among multiple physical drives: RAID is an example of storage virtualization and the array can be accessed by the operating system as one single drive. The different schemes or architectures are named by the word RAID followed by a number (e.g., RAID 0, RAID 1). Each scheme provides a different balance between the key goals: reliability, availability, performance, and capacity.
RAID 0 (block-level striping without parity or mirroring) has no redundancy. It provides improved performance and additional storage but no fault tolerance. Any drive failure destroys the array, and the likelihood of failure increases with more drives in the array. A single drive failure destroys the entire array because when data is written to a RAID 0 volume, the data is broken into fragments called blocks. The number of blocks is dictated by the stripe size, which is a configuration parameter of the array. The blocks are written to their respective drives simultaneously. This allows smaller sections of the entire chunk of data to be read off each drive in parallel, increasing bandwidthMore drives in the array means higher bandwidth, but greater risk of data loss.
In RAID 1 (mirroring without parity or striping), data is written identically to two drives, thereby producing a “mirrored set”; the read request is serviced by either of the two drives containing the requested data. One implementation for a system of hard disk drives is to select the copy that involves least seek time plus rotational latency. Similarly, a write request updates both drives. The write performance depends on the slower of the two writes; at least two drives are required to constitute such an array. While more constituent drives may be employed, many implementations deal with a maximum of only two. The array continues to operate as long as at least one drive is functioning. With appropriate operating system support, there can be increased read performance, and only a minimal write performance reduction; implementing RAID 1 with a separate controller for each drive in order to perform simultaneous reads (and writes) is sometimes called “multiplexing” (or “duplexing” when there are only two drives).
In RAID 10 (mirroring and striping), data is written in stripes across primary disks that have been mirrored to secondary disks. A typical RAID 10 configuration consists of four drives, two for striping and two for mirroring. A RAID 10 configuration takes the best concepts of RAID 0 and RAID 1, and combines them to provide better performance and reliability. RAID 10 is often referred to as RAID 1+0 (mirrored+striped).